package day02;
//包装类
//java提供了8个包装类，分别对应8个基本类型
//由于基本类型是以值而非对象形式存在，因此没有面向对象特性，为了让基本类型可以参与面向对象开发，出现了8个包装类，目的是让基本类型可以以对象形式表示。
public class IntegerDemol {
    public static void main(String[] args) {
        /*
        * 基本类型                      包装类
        * byte                          Byte
        * short                        Short
        * int                        Integer
        * long                        Long
        * float                        Float
        * double                        Double
        * boolean                        Boolean
        * char                        Character
        * */
//        .value就不用new了
        int num=123;//基本类型
        Integer i10= Integer.valueOf(num);//Integer的valueOf缓存1字节只能整数对象
        Integer i20= Integer.valueOf(num);
        System.out.println(i10==i20);
        System.out.println(i10.equals(i20));
        double dou=123.233;
        Double d1=Double.valueOf(dou);//Double的valueOf内部就是直接new对象
        Double d2=Double.valueOf(dou);
        System.out.println(d1==d2);
        System.out.println(d1.equals(d2));
/*
*数字类型的包装类都支持将其表示的数字以基本类型返回。
* 需要注意：与基本类型之间互相赋值一样，小类型赋值给大类型可直接赋值，而大类型向小类型上赋值可能丢失精度
*/
        int in=i10.intValue();
        System.out.println(in);
        double dd=i10.doubleValue();
        System.out.println(dd);

//        包装类定义了两个常量用于获取取值范围
//        获取int最大值及最小值
        int imax=Integer.MAX_VALUE;
        int imin=Integer.MIN_VALUE;
        System.out.println(imax);
        System.out.println(imin);

//        包装类可以将字符串解析为对应的基本类型，前提是改字段字符串正确描述了基本类型可以保存的值
        String line ="123";
//         String line ="123.123";//不能解析为整数
        num=Integer.parseInt(line);
        System.out.println(num);
        dd=Double.parseDouble(line);
        System.out.println(dd);
    }
}












